#!/bin/bash
#
# https://github.com/Aniverse/inexistence
# Author: Aniverse
#
#################################################################################

script_update=2020.08.19
script_version=r22007

#################################################################################

usage_guide() {
    s=/usr/bin/local/deluge-update-tracker
    s=$iHome/.config/deluge/script/deluge-update-tracker ; mkdir -p $iHome/.config/deluge/script
    rm -f $s ; nano $s ; chmod 755 $s
    # enable execute plugin, reboot deluged, use /root/deluge-update-tracker as path (/usr/bin/deluge-update-tracker or deluge-update-tracker is not executeable emmmm)
}

#################################################################################

torrentid=$1
torrentname=$2
torrentpath=$3

#################################################################################

black='\033[0;30m'   ; red='\033[0;31m'     ; green='\033[0;32m'   ; yellow='\033[0;33m' ;  bold='\033[1m'
blue='\033[0;34m'    ; magenta='\033[0;35m' ; cyan='\033[0;36m'    ; white='\033[0;37m'  ;  normal='\033[0m'

#################################################################################

find /usr/lib/python*/dist-packages/deluge*/deluge/ui/console/commands -type f -printf "%f\n" | 
sort -d | grep update-tracker -q &&
update_tracker=1

local=127.0.0.1
log=/log/script/deluge-update-tracker.log
[[ ! -f $log ]] && { mkdir -p $(dirname $log) ; touch $log ; }

if [[ $EUID == 0 ]]; then
    source /etc/inexistence/00.Installation/function
    export_inexistence_info
    chown $iUser: $log
    if [[ $update_tracker != 1 ]]; then
        deluge_cmd_path=$(dirname $(find /usr/lib/python*/dist-packages/deluge*/deluge/ui/console/commands -type f | head -1))
        cd $deluge_cmd_path
        wget https://github.com/Aniverse/inexistence-files/raw/master/miscellaneous/update-tracker.py -O update-tracker.py
        chmod 644 update-tracker.py
    fi
else
    iHome="$HOME"
fi

# ddport=58846
ddport=$(grep '"daemon_port": [0-9]*' $iHome/.config/deluge/core.conf | grep -oE "[0-9]+")
[[ -z $ddport ]] && { echo "ERROR: No daemon port detected!" >> $log ; exit 1 ; }
[[ -z $(which deluge-console) ]] && { echo "ERROR: No deluge-console detected!" >> $log ; exit 1 ; }

connect_detail="connect $local:$ddport $iUser $iPass"
connect_detail="connect $local:$ddport"

#################################################################################

function update_tracker(){
    if [[ $update_tracker == 1 ]]; then
        deluge-console "$connect_detail; update-tracker '$torrentid'"
    else
        deluge-console "$connect_detail; pause          '$torrentid'"
        sleep 2
        deluge-console "$connect_detail; resume         '$torrentid'"
    fi
}

function main(){
    x=1
    while [ $x -le 65 ]; do
        sleep 2
        echo -e "$(date "+%Y.%m.%d %H:%M:%S") [$x]\t$torrentname" >> $log
        line=$(deluge-console "connect $local:$ddport; info" $1 2>&1 | grep "Tracker status")
        echo "$line" >> $log
        case "$line" in
     	    *Unregistered*|*unregistered*|*Sent*|*End*of*file*|*Bad*Gateway*|*Error*|*error*|*timed*out|*502*|*种子不存在于本服务器上*)
                update_tracker ;;
            *)
                echo -e "${green}[Good] $torrentname${normal}\n" >> $log ;
                break ;;
        esac
        x=$(( $x + 1 ))
    done
}


if   [[ -z $torrentid ]]; then
    sleep 0
elif [[ $torrentid == "-l" ]]; then
    printf "%-70s\n" "-" | sed 's/\s/-/g'
    tail -300 $log
    printf "%-70s\n" "-" | sed 's/\s/-/g'
elif [[ $torrentid == "-c" ]]; then
    echo -n > $log
    echo "Log clean"
else
    main
fi

#################################################################################
#################################################################################
#################################################################################
#################################################################################
#################################################################################

unused_codes_ignore_these() {
# echo "[Info]    TorrentID: $torrentid" >> $log
# echo "${blue}[Info]    TorrentName: $torrentname${normal}" >> $log
    Usernamee=ANUSER
    Passwordd=ANPASS
    line=$(/usr/bin/deluge-console "connect 127.0.0.1:$ddport $Usernamee $Passwordd; info" $1 | grep "Tracker status")
    echo $line >> $log
    case "$line" in
        *unregistered*|*Sent*|*End*of*file*|*Bad*Gateway*) eval /usr/bin/deluge-console "connect 127.0.0.1:$ddport $Usernamee $Passwordd\; update-tracker '$torrentid'";;
        *) echo "Found working torrent: $torrentname $torrentpath $torrentid" >> ~/script.log ; exit 1 ;;
    esac
}
